Primeira aula de laboratório, script 11

O objetivo deste roteiro de aula é apresentar comandos básicos do R, comandos necessários para estimação de uma regressão linear múltipla e introduzir a interpretação das estimativas pontuais.

Regressões que serão estimadas

1 - Infecções por COVID-19, gênero e características socioeconômicas, âmbito internacional (Abras, Fava e Kuwahara, 2021).

infec_per_capita = \(\beta_0\) + \(\beta_1\)dirigente_mulher + \(\beta_2\)fertilidade + \(\beta_3\)poluição + \(\beta_4\)lockdown + \(\beta_5\) continente + u

2 - Mortalidade devido a COVID-19 e características socioeconômicas, âmbito internacional (Abras, Fava e Kuwahara, 2021)

obitos_per_capita = \(\beta_0\) + \(\beta_1\)dirigente_mulher + \(\beta_2\)fertilidade + \(\beta_3\)poluição + \(\beta_4\)lockdown + \(\beta_5\)continente + \(\beta_6\)infec_per_capita + u

3 - Equação de Mincer (Giuberti e Menezes-Filho, 2005; Meara, Pastore e Webster, 2020)

salário_hora_real = \(\beta_0\) + \(\beta_1\)educação + \(\beta_2\)experiência + \(\beta_3\)setor + \(\beta_4\)ocupação + \(\beta_5\)gênero + \(\beta_6\)etnia + \(\beta_7\)região + \(\beta_8\)área_urbana + ut

Dados

# install.packages("tidyverse")
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ ggplot2 3.3.5     ✓ purrr   0.3.4
## ✓ tibble  3.1.4     ✓ dplyr   1.0.7
## ✓ tidyr   1.1.3     ✓ stringr 1.4.0
## ✓ readr   2.0.1     ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
load("aulas_praticas/aula_1/lab_1_dados.Rdata")

# convertendo para tibbles

db_cov <- db_cov |> dplyr::as_tibble(db_cov)

db_min <- db_min |> dplyr::as_tibble(db_min)

db_cov
db_min

Preparação dos dados para equações 1 e 2

É comum, em dados socieconômicos que algumas variáveis apresentem, para algumas unidades, valores não-observados. Em sondagens com aplicação de questionário à pessoas ou empresas, é o que se tem quando a informação não é concedida, i.e., o entrevistado se recusa a responder ou a questão não se aplica (p.ex., idade dos filhos não se aplica a família sem filhos). Em dados de países, como é o caso da base db_cov, trata-se de informação não gerada pelo país (p.ex., países em situação de guerra não possuem serviços estatísticos funcionando, e, portanto, não calculam PIB e outras estatísticas).

Dados faltantes:

db_cov |> 
  dplyr::filter(is.na(fertility_)) |> 
  dplyr::tally() |> 
  dplyr::pull()
## [1] 19

Fertilidade não observado para 19 países.

Limpando dados faltantes:

db_covs <- db_cov |>
  dplyr::select(casos_por_milhao, obitos_por_milhao, fem_head, fertility_, airpoll_exposure_, d_lockdown, Continent, country) |>
  tidyr::drop_na()

Resumo estatístico das variáveis selecionadas:

summary(db_covs)
##  casos_por_milhao   obitos_por_milhao    fem_head        fertility_   
##  Min.   :    1.23   Min.   :  0.000   Min.   :0.0000   Min.   :1.171  
##  1st Qu.:  194.97   1st Qu.:  3.409   1st Qu.:0.0000   1st Qu.:1.736  
##  Median :  779.91   Median : 17.216   Median :0.0000   Median :2.254  
##  Mean   : 2265.86   Mean   : 67.311   Mean   :0.1124   Mean   :2.807  
##  3rd Qu.: 2690.78   3rd Qu.: 59.128   3rd Qu.:0.0000   3rd Qu.:3.786  
##  Max.   :36103.38   Max.   :844.463   Max.   :1.0000   Max.   :7.253  
##                                                                       
##  airpoll_exposure_   d_lockdown        Continent                 country   
##  Min.   : 6.455    Min.   :0.000   Africa   :52   Afghanistan        :  1  
##  1st Qu.:16.531    1st Qu.:1.000   Asia     :44   Albania            :  1  
##  Median :24.408    Median :1.000   Europe   :40   Algeria            :  1  
##  Mean   :28.531    Mean   :0.764   NorthAmer:25   Andorra            :  1  
##  3rd Qu.:35.498    3rd Qu.:1.000   Oceania  : 5   Angola             :  1  
##  Max.   :98.248    Max.   :1.000   SouthAmer:12   Antigua and Barbuda:  1  
##                                                   (Other)            :172

Gráfico de dispersão de mortalidade vs infecções:

db_covs |> 
  ggplot() +
  geom_point(aes(
    x = casos_por_milhao,
    y = obitos_por_milhao,
  )) +
  labs(
    x = "Infecções",
    y = "Óbitos"
  )

Qual é a direção da relação entre as duas variáveis?

Coeficientes de correlação com teste de significância: mortalidade vs infecções:

# install.packages("broom") 
library(broom) # converte as funções estatísticas do R em tidy data

db_covs |> dplyr::do(
  cor.test(.$casos_por_milhao, .$obitos_por_milhao) |> 
    broom::tidy()
  ) # do() executa qualquer função (fora do tidyverse) envolvendo dataframes em um pipe.

A correlação é estatisticamente significativa ou não? Há contradição com o gráfico de dispersão? R: É significativa e coerente com o gráfico.

Estatísticas-resumo por continente

Número médio de casos per capita por continente: qual continente apresentou maior prevalência de COVID-19?

db_covs |> 
  dplyr::group_by(Continent) |> 
  dplyr::summarise(m_obitos_por_milhao = mean(obitos_por_milhao)) |>
  dplyr::arrange(m_obitos_por_milhao) |> 
  knitr::kable(col.names = c("Continente","Óbitos por milhão"))
Continente Óbitos por milhão
Oceania 7.68420
Africa 10.88904
Asia 26.57332
NorthAmer 72.24140
SouthAmer 144.98367
Europe 166.54235

Taxa média de letalidade: qual continente apresentou maior taxa de letalidade? A taxa de letalidade é uma medida da gravidade do impacto na saúde causado pelo COVID-19 ou do grau de risco de vida imposto pela aquisição do vírus.

db_covs <- db_covs |>
  dplyr::mutate(letalidade = obitos_por_milhao/casos_por_milhao) # criando coluna com dados de letalidade
  
db_covs |>   
  dplyr::group_by(Continent) |> 
  dplyr::summarise(m_letalidade = mean(100*letalidade)) |>
  dplyr::arrange(m_letalidade) |> 
  knitr::kable(col.names = c("Continente", "Taxa de letalidade (%)"),
               digits = 2)
Continente Taxa de letalidade (%)
Oceania 0.91
Asia 2.16
Africa 2.37
SouthAmer 3.27
NorthAmer 3.62
Europe 5.22

É o que esperávamos? Qual é a razão da diferençara do ranque comparando às outras classificações? R: Provavelmente diferenças populacionais entre os continentes.

Os percentis da distribuição empírica de uma variável permitem identificar valores discrepantes da tendência central (média), i.e., muito pequenos ou muito grandes.

db_covs |>
  dplyr::summarise(letalidade = obitos_por_milhao/casos_por_milhao) |>
  dplyr::do(
    quantile(.$letalidade, 1:20/20) |> 
    broom::tidy()
  ) |>
  knitr::kable(col.names = c("Percentil", "Letalidade")) # Os valores da coluna "Letalidade" representam a distribuição da letalidade pelos percentis.
Percentil Letalidade
5% 0.0000000
10% 0.0019993
15% 0.0046646
20% 0.0071230
25% 0.0098918
30% 0.0133748
35% 0.0159819
40% 0.0179539
45% 0.0191344
50% 0.0219203
55% 0.0253701
60% 0.0276922
65% 0.0319813
70% 0.0375119
75% 0.0412992
80% 0.0469252
85% 0.0513218
90% 0.0602842
95% 0.0870454
100% 0.2830463

Detectando outliers (países que estão nos percentis 5% e 95%):

db_covs |> 
  dplyr::filter(letalidade == 0) |> 
  dplyr::do(
   summary(.$Continent) |> 
     broom::tidy()
  ) |> 
  knitr::kable(col.names = c("Continente", "Frequência"),
               caption = "Número de países abaixo do percentil 5%")
## Warning: 'tidy.numeric' é obsoleto.
## Veja help("Deprecated")
Número de países abaixo do percentil 5%
Continente Frequência
Africa 3
Asia 6
Europe 0
NorthAmer 4
Oceania 2
SouthAmer 0
db_covs |> 
  dplyr::filter(letalidade >= 0.087045428) |> 
  dplyr::do(
   summary(.$Continent) |> 
     broom::tidy()
  ) |> 
    knitr::kable(col.names = c("Continente", "Frequência"),
               caption = "Número de países acima do percentil 95%")
## Warning: 'tidy.numeric' é obsoleto.
## Veja help("Deprecated")
Número de países acima do percentil 95%
Continente Frequência
Africa 0
Asia 1
Europe 6
NorthAmer 2
Oceania 0
SouthAmer 0

É o que esperávamos? Qual a característica de geografia física mais recorrente nesse grupo de países? R: São ilhas.

Quais são os países com letalidade muito alta? R: Os continentais.

É o que esperávamos? O que isso nos diz sobre o ranque continental?

Preparação dos dados para equação 3

db_min <- db_min |> 
  dplyr::select(sal_hor,anos_educ, exper_idade_trab, exper_idade_trab_sq, d_etnia_bca_ama, d_etnia_pre_par, d_hom, d_ativ_agro, d_ativ_indus, d_ativ_const, d_ativ_social, d_ativ_serv, d_ativ_apub, d_ocup_adm, d_ocup_agro, d_ocup_com, d_ocup_serv, d_ocup_dirigente, d_ocup_cie_art, d_ocup_tec_med, d_ocup_rep_manut, d_ocup_armada, d_reg_2, d_reg_3, d_reg_4, d_reg_5, d_urbano, ano) |> 
  tidyr::drop_na()

Salário-hora vs educação:

sal_hor_educ <- db_min |>
  dplyr::select(anos_educ,sal_hor,ano) |> 
  dplyr::filter(ano == 2015) 

sal_hor_educ |> 
  ggplot() +
  geom_point(aes(
    x = anos_educ,
    y = sal_hor,
  )) +
  labs(
    x = "Educação",
    y = "Salário-Hora"
  )

Esse gráfico de dispersão é peculiar por conta do caráter discreto da variável no eixo horizontal. Para tornar mais notória a presença (ou não) de uma relação funcional entre as duas variáveis é útil incluir o gráfico da função empírica de expectativa condicional.

sal_hor_byeduc <- db_min |>
  dplyr::group_by(anos_educ) |> 
  dplyr::summarise(sal_hor = mean(sal_hor))

sal_hor_byeduc

Qual é a relação revelada pela FEC empírica? R: Correlação positiva entre anos de estudo e aumento médio do salário.

Agora, acrescentando a FEC empírica no gráfico de dispersão, tem-se:

sal_hor_educ |> 
  ggplot() +
  geom_point(aes(
    x = anos_educ,
    y = sal_hor
    )
  ) +
  geom_line(
    data = sal_hor_byeduc,
    aes(
    x = anos_educ,
    y = sal_hor,
  ),
  color = "red") +
  labs(
    x = "Educação",
    y = "Salário-Hora"
  )

Coeficientes de correlação com teste de significância:

db_min |> dplyr::do(
  cor.test(.$anos_educ, .$sal_hor) |> 
    broom::tidy()
  )

Está de acordo com o gráfico? R: Sim, o teste é significante e a correlação, embora não seja forte, é relevante.

Regressões

Regressão 1

Variável dependente:

  • Infecções per capita (por um milhão de habitantes) - casos_por_milhao

Variáveis explicativas:

  • Instituições:

    • País é presidido ou dirigido por mulher - fem_head
  • Demografia:

    • Taxa de fertilidade - fertility_ (uma proxy para a capacidade de renovação da população e, pois, juventude da população)
  • Outras causas de doenças:

    • Exposição à poluição atmosférica - airpoll_exposure_
  • Políticas anti-COVID:

    • Lockdown foi implementado - d_lockdown

    • Continente - Continent_

Criando dummies:

# install.packages("fastDummies")
library("fastDummies")

db_covs <- db_covs |> 
  fastDummies::dummy_columns(select_columns = "Continent",
                             remove_first_dummy = T, # criando n-1 dummies
                             remove_selected_columns = T) # removendo a coluna que gerou as dummies

db_covs # a dummie para a África foi tomada por base

Regressão:

summary(db_covs)
##  casos_por_milhao   obitos_por_milhao    fem_head        fertility_   
##  Min.   :    1.23   Min.   :  0.000   Min.   :0.0000   Min.   :1.171  
##  1st Qu.:  194.97   1st Qu.:  3.409   1st Qu.:0.0000   1st Qu.:1.736  
##  Median :  779.91   Median : 17.216   Median :0.0000   Median :2.254  
##  Mean   : 2265.86   Mean   : 67.311   Mean   :0.1124   Mean   :2.807  
##  3rd Qu.: 2690.78   3rd Qu.: 59.128   3rd Qu.:0.0000   3rd Qu.:3.786  
##  Max.   :36103.38   Max.   :844.463   Max.   :1.0000   Max.   :7.253  
##                                                                       
##  airpoll_exposure_   d_lockdown                   country      letalidade      
##  Min.   : 6.455    Min.   :0.000   Afghanistan        :  1   Min.   :0.000000  
##  1st Qu.:16.531    1st Qu.:1.000   Albania            :  1   1st Qu.:0.009892  
##  Median :24.408    Median :1.000   Algeria            :  1   Median :0.021920  
##  Mean   :28.531    Mean   :0.764   Andorra            :  1   Mean   :0.031542  
##  3rd Qu.:35.498    3rd Qu.:1.000   Angola             :  1   3rd Qu.:0.041299  
##  Max.   :98.248    Max.   :1.000   Antigua and Barbuda:  1   Max.   :0.283046  
##                                    (Other)            :172                     
##  Continent_Asia   Continent_Europe Continent_NorthAmer Continent_Oceania
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.0000      Min.   :0.00000  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.0000      1st Qu.:0.00000  
##  Median :0.0000   Median :0.0000   Median :0.0000      Median :0.00000  
##  Mean   :0.2472   Mean   :0.2247   Mean   :0.1404      Mean   :0.02809  
##  3rd Qu.:0.0000   3rd Qu.:0.0000   3rd Qu.:0.0000      3rd Qu.:0.00000  
##  Max.   :1.0000   Max.   :1.0000   Max.   :1.0000      Max.   :1.00000  
##                                                                         
##  Continent_SouthAmer
##  Min.   :0.00000    
##  1st Qu.:0.00000    
##  Median :0.00000    
##  Mean   :0.06742    
##  3rd Qu.:0.00000    
##  Max.   :1.00000    
## 
# install.packages("estimatr")
library("estimatr")

mqo_1 <- estimatr::lm_robust(casos_por_milhao ~ fem_head + fertility_ + airpoll_exposure_ + d_lockdown + Continent_Asia + Continent_Europe + Continent_NorthAmer + Continent_Oceania + Continent_SouthAmer,
                    data = db_covs,
                    se_type = "classical")

summary(mqo_1)
## 
## Call:
## estimatr::lm_robust(formula = casos_por_milhao ~ fem_head + fertility_ + 
##     airpoll_exposure_ + d_lockdown + Continent_Asia + Continent_Europe + 
##     Continent_NorthAmer + Continent_Oceania + Continent_SouthAmer, 
##     data = db_covs, se_type = "classical")
## 
## Standard error type:  classical 
## 
## Coefficients:
##                     Estimate Std. Error  t value  Pr(>|t|) CI Lower CI Upper
## (Intercept)          3777.95    1875.17  2.01472 0.0455291    76.01   7479.9
## fem_head            -1162.78     936.86 -1.24114 0.2162828 -3012.33    686.8
## fertility_          -1097.84     358.97 -3.05831 0.0025909 -1806.51   -389.2
## airpoll_exposure_      73.39      20.47  3.58507 0.0004414    32.98    113.8
## d_lockdown          -1264.61     714.78 -1.76922 0.0786711 -2675.72    146.5
## Continent_Asia        593.63    1032.01  0.57522 0.5659126 -1443.74   2631.0
## Continent_Europe     1020.64    1301.86  0.78399 0.4341505 -1549.46   3590.7
## Continent_NorthAmer    29.59    1248.22  0.02370 0.9811172 -2434.63   2493.8
## Continent_Oceania     -23.81    1915.26 -0.01243 0.9900962 -3804.88   3757.3
## Continent_SouthAmer  2865.73    1414.93  2.02535 0.0444146    72.39   5659.1
##                      DF
## (Intercept)         168
## fem_head            168
## fertility_          168
## airpoll_exposure_   168
## d_lockdown          168
## Continent_Asia      168
## Continent_Europe    168
## Continent_NorthAmer 168
## Continent_Oceania   168
## Continent_SouthAmer 168
## 
## Multiple R-squared:  0.1864 ,    Adjusted R-squared:  0.1428 
## F-statistic: 4.276 on 9 and 168 DF,  p-value: 5.156e-05

infec_per_capita = 3777,95 - 1162,8*Dirigente mulher - 1097,84*Fertilidade + 73,4*Poluição - 1264,61*Lockdown + 593,63*Ásia + 1020,64*Europa + 29,6*América do Norte - 23,81*Oceania + 2865,72*América do Sul

O que se pode concluir? R: Controlando para outras variáveis, ter uma líder mulher é associado a uma redução nas infecções per capita (por um milhão de habitantes). O resultado não é significante.

Quais variáveis possuem relação positiva com o número de infecções? R: Poluição e as dummies Ásia, Europa, América do Norte e América do Sul.

Quais variáveis possuem relação negativa com o número de infecções? R: Dirigente mulher, Fertilidade, Lockdown e a dummie Oceania.

Qual é a proporção da variação da variável dependente explicada? R: 18,64%

Regressão 2

mqo_2 <- estimatr::lm_robust(obitos_por_milhao ~ fem_head + fertility_ + airpoll_exposure_ + d_lockdown + Continent_Asia + Continent_Europe + Continent_NorthAmer + Continent_Oceania + Continent_SouthAmer + casos_por_milhao,
                             data = db_covs,
                             se_type = "classical")

summary(mqo_2)
## 
## Call:
## estimatr::lm_robust(formula = obitos_por_milhao ~ fem_head + 
##     fertility_ + airpoll_exposure_ + d_lockdown + Continent_Asia + 
##     Continent_Europe + Continent_NorthAmer + Continent_Oceania + 
##     Continent_SouthAmer + casos_por_milhao, data = db_covs, se_type = "classical")
## 
## Standard error type:  classical 
## 
## Coefficients:
##                      Estimate Std. Error t value  Pr(>|t|)   CI Lower  CI Upper
## (Intercept)           5.99088  55.230243  0.1085 9.138e-01 -1.030e+02 115.03035
## fem_head            -17.07295  27.391125 -0.6233 5.339e-01 -7.115e+01  37.00456
## fertility_            9.14827  10.734297  0.8522 3.953e-01 -1.204e+01  30.34068
## airpoll_exposure_    -1.15310   0.618184 -1.8653 6.389e-02 -2.374e+00   0.06737
## d_lockdown           -3.68970  20.995826 -0.1757 8.607e-01 -4.514e+01  37.76175
## Continent_Asia        4.35382  30.065021  0.1448 8.850e-01 -5.500e+01  63.71032
## Continent_Europe    132.89956  37.958336  3.5012 5.942e-04  5.796e+01 207.83960
## Continent_NorthAmer  46.20956  36.328082  1.2720 2.051e-01 -2.551e+01 117.93104
## Continent_Oceania    -9.38969  55.741527 -0.1685 8.664e-01 -1.194e+02 100.65919
## Continent_SouthAmer  88.23931  41.679718  2.1171 3.573e-02  5.952e+00 170.52637
## casos_por_milhao      0.01331   0.002245  5.9276 1.714e-08  8.877e-03   0.01774
##                      DF
## (Intercept)         167
## fem_head            167
## fertility_          167
## airpoll_exposure_   167
## d_lockdown          167
## Continent_Asia      167
## Continent_Europe    167
## Continent_NorthAmer 167
## Continent_Oceania   167
## Continent_SouthAmer 167
## casos_por_milhao    167
## 
## Multiple R-squared:  0.3708 ,    Adjusted R-squared:  0.3331 
## F-statistic: 9.843 on 10 and 167 DF,  p-value: 7.37e-13

O que se pode concluir? R: Para óbitos por milhão, as variáveis significantes são a exposição a poluição, os continentes europeu, norte-americano, sul-americano e os casos por milhão.

Quais variáveis possuem relação positiva com o número de óbitos? R: Taxa de fertilidade, os continentes asiático, europeu, norte-americano, sulamericano e os casos por milhão.

Quais variáveis possuem relação negativa com o número de óbitos? R: A liderança feminina, a exposição a poluição, o lockdown e o continente da Oceania.

Qual é a proporção da variação da variável dependente explicada? R: 18,64%

cbind(óbitos = coef(mqo_2), infecções = c(coef(mqo_1), NA))
##                           óbitos   infecções
## (Intercept)           5.99088039  3777.94630
## fem_head            -17.07294544 -1162.78354
## fertility_            9.14827059 -1097.84026
## airpoll_exposure_    -1.15309611    73.39331
## d_lockdown           -3.68969587 -1264.60730
## Continent_Asia        4.35382236   593.63094
## Continent_Europe    132.89956438  1020.64098
## Continent_NorthAmer  46.20955831    29.58729
## Continent_Oceania    -9.38968945   -23.80919
## Continent_SouthAmer  88.23931307  2865.72527
## casos_por_milhao      0.01330986          NA

Regressão 3

Variável dependente:

  • Salário-hora

Variáveis independentes:

  • Educação e experiência:

    • Anos de estudo - anos_educ

    • Experiência - exper_idade_trab (idade em que começou a trabalhar)

    • Experiência ao quadrado - exper_idade_trab_sq

  • Características pessoais:

    • Etnia preta ou parda - etnia_pre_par

    • Sexo masculino - d_hom

  • Setor e ocupação:

    • Setor de atividade: agropecuária, indústria, construção, educação/saúde/social, outros serviços, administração pública - d_ativ*

    • Ocupação: administração, agricultura, comércio, outros serviços, dirigente, ciência/tecnologia, técnico de nível médio, reparo/manutenção, forças armadas - d_ocup*

  • Regional

    • Grande região brasileiras - Nordeste (2), Sudeste (3), Sul (4), Centro Oeste (5) - d_reg_2 a d_reg_5

    • Área urbana - d_urbano

Há cinco regiões brasileiras: por que apenas quatro foram incluídas? R: Um estado foi usado de referência para as outras dummies.

Há a rigor dois grupos de etnia nas subamostras da PNAD consideradas, (1) brancos e amarelos e (2) pretos e pardos. Por que um deles não foi considerado? R: Um grupo foi usado de referência para as outras dummies.

Por que a variável experiência ao quadrado é incluída?

summary(subset(db_min,select=c(anos_educ,exper_idade_trab,exper_idade_trab_sq,d_etnia_bca_ama,d_etnia_pre_par,d_hom,d_ativ_agro,d_ativ_indus,d_ativ_const,d_ativ_social,d_ativ_serv,d_ativ_apub,d_ocup_adm,d_ocup_agro,d_ocup_com,d_ocup_serv,d_ocup_dirigente,d_ocup_cie_art,d_ocup_tec_med,d_ocup_rep_manut,d_ocup_armada,d_reg_2,d_reg_3,d_reg_4,d_reg_5,d_urbano)))
##    anos_educ      exper_idade_trab exper_idade_trab_sq d_etnia_bca_ama 
##  Min.   : 0.000   Min.   : 0.0     Min.   :   0.0      Min.   :0.0000  
##  1st Qu.: 6.000   1st Qu.:10.0     1st Qu.: 100.0      1st Qu.:0.0000  
##  Median :11.000   Median :19.0     Median : 361.0      Median :0.0000  
##  Mean   : 8.917   Mean   :19.8     Mean   : 541.3      Mean   :0.4603  
##  3rd Qu.:11.000   3rd Qu.:29.0     3rd Qu.: 841.0      3rd Qu.:1.0000  
##  Max.   :15.000   Max.   :59.0     Max.   :3481.0      Max.   :1.0000  
##  d_etnia_pre_par      d_hom         d_ativ_agro       d_ativ_indus   
##  Min.   :0.0000   Min.   :0.0000   Min.   :0.00000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.00000   1st Qu.:0.0000  
##  Median :1.0000   Median :1.0000   Median :0.00000   Median :0.0000  
##  Mean   :0.5397   Mean   :0.5571   Mean   :0.06467   Mean   :0.1561  
##  3rd Qu.:1.0000   3rd Qu.:1.0000   3rd Qu.:0.00000   3rd Qu.:0.0000  
##  Max.   :1.0000   Max.   :1.0000   Max.   :1.00000   Max.   :1.0000  
##   d_ativ_const     d_ativ_social     d_ativ_serv      d_ativ_apub     
##  Min.   :0.00000   Min.   :0.0000   Min.   :0.0000   Min.   :0.00000  
##  1st Qu.:0.00000   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.00000  
##  Median :0.00000   Median :0.0000   Median :0.0000   Median :0.00000  
##  Mean   :0.06236   Mean   :0.1419   Mean   :0.3978   Mean   :0.08077  
##  3rd Qu.:0.00000   3rd Qu.:0.0000   3rd Qu.:1.0000   3rd Qu.:0.00000  
##  Max.   :1.00000   Max.   :1.0000   Max.   :1.0000   Max.   :1.00000  
##    d_ocup_adm      d_ocup_agro        d_ocup_com       d_ocup_serv    
##  Min.   :0.0000   Min.   :0.00000   Min.   :0.00000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.0000  
##  Median :0.0000   Median :0.00000   Median :0.00000   Median :0.0000  
##  Mean   :0.1408   Mean   :0.06216   Mean   :0.07714   Mean   :0.2611  
##  3rd Qu.:0.0000   3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :1.00000   Max.   :1.00000   Max.   :1.0000  
##  d_ocup_dirigente  d_ocup_cie_art    d_ocup_tec_med   d_ocup_rep_manut
##  Min.   :0.00000   Min.   :0.00000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.00000   1st Qu.:0.00000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :0.00000   Median :0.00000   Median :0.0000   Median :0.0000  
##  Mean   :0.03126   Mean   :0.08068   Mean   :0.0919   Mean   :0.2399  
##  3rd Qu.:0.00000   3rd Qu.:0.00000   3rd Qu.:0.0000   3rd Qu.:0.0000  
##  Max.   :1.00000   Max.   :1.00000   Max.   :1.0000   Max.   :1.0000  
##  d_ocup_armada        d_reg_2          d_reg_3          d_reg_4      
##  Min.   :0.00000   Min.   :0.0000   Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.00000   1st Qu.:0.0000   1st Qu.:0.0000   1st Qu.:0.0000  
##  Median :0.00000   Median :0.0000   Median :0.0000   Median :0.0000  
##  Mean   :0.01473   Mean   :0.2443   Mean   :0.3324   Mean   :0.1763  
##  3rd Qu.:0.00000   3rd Qu.:0.0000   3rd Qu.:1.0000   3rd Qu.:0.0000  
##  Max.   :1.00000   Max.   :1.0000   Max.   :1.0000   Max.   :1.0000  
##     d_reg_5          d_urbano     
##  Min.   :0.0000   Min.   :0.0000  
##  1st Qu.:0.0000   1st Qu.:1.0000  
##  Median :0.0000   Median :1.0000  
##  Mean   :0.1211   Mean   :0.9086  
##  3rd Qu.:0.0000   3rd Qu.:1.0000  
##  Max.   :1.0000   Max.   :1.0000

Modelo em 2004

db_min_2004 <- db_min |> filter(ano == 2004)

mqo_3 <- estimatr::lm_robust(sal_hor ~ anos_educ + exper_idade_trab + exper_idade_trab_sq + d_etnia_pre_par + d_hom + d_ativ_agro + d_ativ_indus + d_ativ_const + d_ativ_social + d_ativ_serv + d_ativ_apub + d_ocup_adm + d_ocup_agro + d_ocup_com + d_ocup_serv + d_ocup_dirigente + d_ocup_cie_art + d_ocup_tec_med + d_ocup_rep_manut + d_ocup_armada + d_reg_2 + d_reg_3 + d_reg_4 + d_reg_5 + d_urbano,
                             data = db_min_2004,
                             se_type = "classical")

summary(mqo_3)
## 
## Call:
## estimatr::lm_robust(formula = sal_hor ~ anos_educ + exper_idade_trab + 
##     exper_idade_trab_sq + d_etnia_pre_par + d_hom + d_ativ_agro + 
##     d_ativ_indus + d_ativ_const + d_ativ_social + d_ativ_serv + 
##     d_ativ_apub + d_ocup_adm + d_ocup_agro + d_ocup_com + d_ocup_serv + 
##     d_ocup_dirigente + d_ocup_cie_art + d_ocup_tec_med + d_ocup_rep_manut + 
## 
## Standard error type:  classical 
## 
## Coefficients:
##                      Estimate Std. Error  t value   Pr(>|t|)  CI Lower
## (Intercept)          0.211173  5.845e-01   0.3613  7.179e-01 -0.934526
## anos_educ            0.369292  4.290e-03  86.0839  0.000e+00  0.360884
## exper_idade_trab     0.203126  3.522e-03  57.6720  0.000e+00  0.196223
## exper_idade_trab_sq -0.002572  7.606e-05 -33.8166 3.691e-249 -0.002721
## d_etnia_pre_par     -0.635605  2.750e-02 -23.1093 8.024e-118 -0.689513
## d_hom                1.099752  2.934e-02  37.4873 2.857e-305  1.042253
## d_ativ_agro         -1.509214  1.388e-01 -10.8760  1.558e-27 -1.781192
## d_ativ_indus        -0.331888  5.713e-02  -5.8096  6.283e-09 -0.443858
## d_ativ_const        -0.920635  7.492e-02 -12.2883  1.114e-34 -1.067477
## d_ativ_social       -0.170503  5.822e-02  -2.9288  3.404e-03 -0.284608
## d_ativ_serv         -0.747256  4.821e-02 -15.5008  4.006e-54 -0.841743
## d_ativ_apub          0.701980  6.447e-02  10.8881  1.364e-27  0.575616
## d_ocup_adm           0.540480  5.777e-01   0.9356  3.495e-01 -0.591745
## d_ocup_agro         -0.210188  5.917e-01  -0.3552  7.224e-01 -1.369914
## d_ocup_com          -0.537824  5.789e-01  -0.9290  3.529e-01 -1.672489
## d_ocup_serv         -0.783525  5.777e-01  -1.3562  1.750e-01 -1.915845
## d_ocup_dirigente     4.071856  5.813e-01   7.0044  2.497e-12  2.932459
## d_ocup_cie_art       4.620925  5.794e-01   7.9758  1.530e-15  3.485376
## d_ocup_tec_med       2.171228  5.781e-01   3.7555  1.731e-04  1.038060
## d_ocup_rep_manut    -0.137929  5.775e-01  -0.2388  8.112e-01 -1.269879
## d_ocup_armada        3.174582  5.869e-01   5.4089  6.358e-08  2.024224
## d_reg_2             -0.675888  4.394e-02 -15.3832  2.468e-53 -0.762003
## d_reg_3              0.553537  4.324e-02  12.8008  1.746e-37  0.468782
## d_reg_4              0.425690  4.955e-02   8.5908  8.768e-18  0.328569
## d_reg_5              0.567452  5.093e-02  11.1410  8.265e-29  0.467622
## d_urbano             0.439815  4.749e-02   9.2621  2.045e-20  0.346745
##                      CI Upper    DF
## (Intercept)          1.356873 93080
## anos_educ            0.377700 93080
## exper_idade_trab     0.210029 93080
## exper_idade_trab_sq -0.002423 93080
## d_etnia_pre_par     -0.581697 93080
## d_hom                1.157252 93080
## d_ativ_agro         -1.237236 93080
## d_ativ_indus        -0.219919 93080
## d_ativ_const        -0.773793 93080
## d_ativ_social       -0.056399 93080
## d_ativ_serv         -0.652770 93080
## d_ativ_apub          0.828345 93080
## d_ocup_adm           1.672704 93080
## d_ocup_agro          0.949539 93080
## d_ocup_com           0.596842 93080
## d_ocup_serv          0.348794 93080
## d_ocup_dirigente     5.211253 93080
## d_ocup_cie_art       5.756474 93080
## d_ocup_tec_med       3.304395 93080
## d_ocup_rep_manut     0.994021 93080
## d_ocup_armada        4.324939 93080
## d_reg_2             -0.589772 93080
## d_reg_3              0.638292 93080
## d_reg_4              0.522812 93080
## d_reg_5              0.667281 93080
## d_urbano             0.532886 93080
## 
## Multiple R-squared:  0.3932 ,    Adjusted R-squared:  0.393 
## F-statistic:  2412 on 25 and 93080 DF,  p-value: < 2.2e-16

Modelo em 2015

db_min_2015 <- db_min |> filter(ano == 2015)

mqo_4 <- estimatr::lm_robust(sal_hor ~ anos_educ + exper_idade_trab + exper_idade_trab_sq + d_etnia_pre_par + d_hom + d_ativ_agro + d_ativ_indus + d_ativ_const + d_ativ_social + d_ativ_serv + d_ativ_apub + d_ocup_adm + d_ocup_agro + d_ocup_com + d_ocup_serv + d_ocup_dirigente + d_ocup_cie_art + d_ocup_tec_med + d_ocup_rep_manut + d_ocup_armada + d_reg_2 + d_reg_3 + d_reg_4 + d_reg_5 + d_urbano,
                             data = db_min_2015,
                             se_type = "classical")

summary(mqo_4)
## 
## Call:
## estimatr::lm_robust(formula = sal_hor ~ anos_educ + exper_idade_trab + 
##     exper_idade_trab_sq + d_etnia_pre_par + d_hom + d_ativ_agro + 
##     d_ativ_indus + d_ativ_const + d_ativ_social + d_ativ_serv + 
##     d_ativ_apub + d_ocup_adm + d_ocup_agro + d_ocup_com + d_ocup_serv + 
##     d_ocup_dirigente + d_ocup_cie_art + d_ocup_tec_med + d_ocup_rep_manut + 
## 
## Standard error type:  classical 
## 
## Coefficients:
##                      Estimate Std. Error  t value   Pr(>|t|)  CI Lower
## (Intercept)          4.760809  1.9267361   2.4709  1.348e-02  0.984426
## anos_educ            0.425104  0.0062883  67.6022  0.000e+00  0.412779
## exper_idade_trab     0.235750  0.0051781  45.5284  0.000e+00  0.225601
## exper_idade_trab_sq -0.002856  0.0001098 -26.0192 1.050e-148 -0.003071
## d_etnia_pre_par     -0.734899  0.0397730 -18.4774  4.327e-76 -0.812854
## d_hom                1.387741  0.0421525  32.9219 2.611e-236  1.305123
## d_ativ_agro         -0.051992  0.2577559  -0.2017  8.401e-01 -0.557191
## d_ativ_indus        -0.117362  0.0817892  -1.4349  1.513e-01 -0.277668
## d_ativ_const        -0.042298  0.1004524  -0.4211  6.737e-01 -0.239184
## d_ativ_social       -0.351473  0.0786452  -4.4691  7.864e-06 -0.505617
## d_ativ_serv         -0.612107  0.0660631  -9.2655  1.983e-20 -0.741590
## d_ativ_apub          2.086567  0.0910489  22.9170 6.693e-116  1.908112
## d_ocup_adm          -3.536460  1.9219725  -1.8400  6.577e-02 -7.303507
## d_ocup_agro         -4.937304  1.9383145  -2.5472  1.086e-02 -8.736381
## d_ocup_com          -4.392263  1.9224531  -2.2847  2.233e-02 -8.160252
## d_ocup_serv         -4.369414  1.9217715  -2.2736  2.299e-02 -8.136067
## d_ocup_dirigente     2.268914  1.9238242   1.1794  2.383e-01 -1.501763
## d_ocup_cie_art       3.234691  1.9225879   1.6825  9.248e-02 -0.533562
## d_ocup_tec_med      -1.225709  1.9223848  -0.6376  5.237e-01 -4.993564
## d_ocup_rep_manut    -3.871333  1.9218719  -2.0144  4.398e-02 -7.638183
## d_ocup_armada        3.574615  1.9278313   1.8542  6.371e-02 -0.203915
## d_reg_2             -0.906190  0.0614007 -14.7586  3.086e-49 -1.026535
## d_reg_3              0.656714  0.0593613  11.0630  1.977e-28  0.540366
## d_reg_4              0.913302  0.0688830  13.2587  4.374e-40  0.778292
## d_reg_5              1.226391  0.0719240  17.0512  4.321e-65  1.085421
## d_urbano             0.594744  0.0718387   8.2789  1.260e-16  0.453941
##                      CI Upper    DF
## (Intercept)          8.537193 91337
## anos_educ            0.437429 91337
## exper_idade_trab     0.245899 91337
## exper_idade_trab_sq -0.002641 91337
## d_etnia_pre_par     -0.656945 91337
## d_hom                1.470360 91337
## d_ativ_agro          0.453207 91337
## d_ativ_indus         0.042944 91337
## d_ativ_const         0.154588 91337
## d_ativ_social       -0.197329 91337
## d_ativ_serv         -0.482623 91337
## d_ativ_apub          2.265022 91337
## d_ocup_adm           0.230587 91337
## d_ocup_agro         -1.138227 91337
## d_ocup_com          -0.624274 91337
## d_ocup_serv         -0.602761 91337
## d_ocup_dirigente     6.039590 91337
## d_ocup_cie_art       7.002944 91337
## d_ocup_tec_med       2.542146 91337
## d_ocup_rep_manut    -0.104484 91337
## d_ocup_armada        7.353145 91337
## d_reg_2             -0.785845 91337
## d_reg_3              0.773061 91337
## d_reg_4              1.048312 91337
## d_reg_5              1.367361 91337
## d_urbano             0.735547 91337
## 
## Multiple R-squared:  0.367 , Adjusted R-squared:  0.3668 
## F-statistic:  2118 on 25 and 91337 DF,  p-value: < 2.2e-16

Visualizando resultados

mqo_3 <- broom::tidy(mqo_3)

mqo_4 <- broom::tidy(mqo_4)

mincer <- dplyr::bind_cols(mqo_3 |>
                   dplyr::select(term, estimate) |> 
                   dplyr::rename(`2004` = estimate),
                 mqo_4 |> 
                   dplyr::select(estimate)|> 
                   dplyr::rename(`2015` = estimate))

mincer

O que se pode concluir? R: Não tiveram muitas modificações no efeito das variáveis explicativas escolhidas no salário entre 2004 e 2015.

Quais variáveis possuem relação positiva com o salário horário?

mincer |> 
  dplyr::filter(`2004` > 0) |> 
  dplyr::select(term, `2004`)
mincer |> 
  dplyr::filter(`2015` > 0) |> 
  dplyr::select(term, `2015`)

Quais variáveis possuem relação negativa com o salário horário?

mincer |> 
  dplyr::filter(`2004` < 0) |> 
  dplyr::select(term, `2004`)
mincer |> 
  dplyr::filter(`2015` < 0) |> 
  dplyr::select(term, `2015`)

Como interpretar o coeficiente da educação? R: Um ano a mais de educação leva a um aumento, em média, de 0,37 reais no salário-hora.

Como interpretar o coeficiente da experiência (medida em anos)? R: Um ano a mais de experiência leva a um aumento, em média, de 0,20 reais no salário-hora.

Como interpretar o coeficiente da etnia preta e parda? R: Trabalhadores pretos e pardos possuem uma diferença, em média, de -0,63 reais de salário-hora.

Como interpretar o coeficiente do gênero masculino? R: Homens ganham, em média, 1,1 reais de salário-hora a mais que mulheres.

Para quais variáveis o coeficiente estimado difere entre 2004 e 2015? O retorno da educação aumentou?

retorno_educ <- mincer |> 
  dplyr::slice(2) |> 
  dplyr::summarise(var = (`2015`-`2004`)/abs(`2004`)*100) |> 
  dplyr::pull() |> 
  round(2)

mincer |>
  dplyr::mutate(var = (`2015`-`2004`)/abs(`2004`)) |> 
  dplyr::filter(var > 0.15 | var < -0.15) # variáveis com pelo menos 15% de variação entre o período de 2004 e 2015

R: O retorno da educação aumentou, em média, 15.11%.

O retorno da experiência aumentou?

retorno_exp <- mincer |> 
  dplyr::slice(3) |> 
  dplyr::summarise(var = (`2015`-`2004`)/abs(`2004`)*100) |> 
  dplyr::pull() |> 
  round(2)

R: O retorno da experiência aumentou, em média, 16.06%.

Faz sentido afirmar que há diferenciação regional em salário horário? R: Sim, pois todas as variáveis referentes às regiões brasileiras são significantes.

Referências

ABRAS, A.; FAVA, A. C. P. E.; KUWAHARA, M. Y. Women Heads of State and Covid-19 Policy Responses. Feminist Economics, v. 27, n. 1-2, p. 380–400, 3 abr. 2021.
GIUBERTI, A. C.; MENEZES-FILHO, N. Discriminação de rendimentos por gênero: uma comparação entre o Brasil e os Estados Unidos. Economia Aplicada, v. 9, p. 369–384, set. 2005.
MEARA, K.; PASTORE, F.; WEBSTER, A. The gender pay gap in the USA: a matching study. Journal of Population Economics, v. 33, n. 1, p. 271–305, 1 jan. 2020.

  1. Preparado por Thiago Fonseca Morello (CECS-UFABC).↩︎